package Testing;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
import java.util.concurrent.ForkJoinPool;
public class Test11 {
    public static void main(String[] args) {
        //双色球彩票系统
        //前六位红色 范围是1-33，后一位蓝色，范围1-16，相同颜色号码不会重复出现
        //生成中奖号码，用户输入进行比对，得不同奖项的结果
        //1.生成一个随机号码
        int[] randomArr = createNumber();
        System.out.println("*************");
       for (int i = 0; i < randomArr.length; i++) {
        System.out.print(randomArr[i] + " ");//验证生成随机数字，即中奖号码
        //24 19 14 21 27 11 1
        //18 27 6 1 25 24 15
        //2 33 11 9 31 10 2
        }
        System.out.println();//换行符
        System.out.println("*************");

        // 2.用户输入一个自己的号码28 31 30 23 5 17 14
        int[] userPutArr=userInput();
//        for (int i = 0; i < userPutArr.length; i++) {
//            System.out.print(userPutArr[i]+" ");
//        }验证一下用户输入的号码是否能够成功打印
        //3.判断用户的中奖情况
        //红球 蓝球
        int redCount=0;
        int blueCount=0;
        //对红蓝球个数进行统计，然后判断中奖等级
        //小细节就是红球之间顺序无影响
        // 即中奖号码1，2，3，4，5但我买的顺序是5，4，3，2，1
        //系统判定依然是正确的
        for (int i = 0; i < userPutArr.length-1; i++) {
            //这里只是判断红球的中奖情况所以length-1
            int redNum=userPutArr[i];
            for (int j = 0; j < randomArr.length-1 ; j++) {
                //写一个内循环，将用户输入的每一个与系统生成的随机数进行对比
                if(redNum==randomArr[j]){//第一次[ ]内写的i，注意变量
                    redCount++;
                    break;//找到有一个那么之间跳出循环，不需要循环全部
                }
            }
///           int blueNum=userPutArr[userPutArr.length-1];
///            if(blueNum==randomArr[randomArr.length-1]){
///               blueCount++;
///        循环是判断红球中奖个数，那么蓝球判断不应该写在循环内，否则blueCount==6或者==0
///        }//原因是一次中则循环6次得全中，或者全部中
        }
        int blueNum=userPutArr[userPutArr.length-1];
        if(blueNum==randomArr[randomArr.length-1]){
            blueCount++;
        }
//        System.out.println(redCount);
//        System.out.println(blueCount);验证得到的红蓝球个数
        if(redCount==6&&blueCount==1){
            System.out.println("恭喜你中了一千万");
        } else if (redCount==6&&blueCount==0) {
            System.out.println("恭喜你中了五百万");
        } else if (redCount==5&&blueCount==1) {
            System.out.println("恭喜你中了三千元");
        } else if ((redCount==5&&blueCount==0)||(redCount==4&&blueCount==1) ){
            System.out.println("恭喜你中了二百元");
        } else if  ((redCount==4&&blueCount==0)||(redCount==3&&blueCount==1) ){
            System.out.println("恭喜你中了十元");
        } else if ( ((redCount==1&&blueCount==1)||(redCount==2&&blueCount==1) )||(redCount==0&&blueCount==1)) {
            System.out.println("恭喜你中了五元");
        }else{
            System.out.println("很抱歉，您分文未中！");
        }
    }
    public static int [] userInput() {
        int[] userArr = new int[7];
        Scanner sc = new Scanner(System.in);
        for (int i1 = 0; i1 < 6; ) {//0,1,2,3,4,5，这里就是前六个数组索引值
///               if (num >= 1 && num <= 33) {
///                System.out.println("请输入第" + (i + 1) + "个红球数字");
///                   int num = sc.nextInt();
///                   arr[i]=num;
///               }
            //这里肯定是先输入了号码再进行判断范围呀。
            System.out.println("请输入第" + (i1 + 1) + "个红球数字");
            int redNum = sc.nextInt();
            //redNum依然遵循唯一性！
            if (redNum >= 1 && redNum <= 33) {
                //判断唯一性
                boolean flag = remains(userArr, redNum);
                if (!flag) {
                    userArr[i1] = redNum;
                    i1++;//只有当正确且合法时，索引值才会发生改变
                } else {
                    System.out.println("当前号码已被选择，请重新输入");
                }
            } else {
                System.out.println("当前输入值不合法！");
            }
        }
        //让用户输入蓝球号码
        System.out.println("请输入蓝球号码：");
        while (true) {
            //因为存在不合法数据，所以使用while和break
            int blueNum = sc.nextInt();
            if (blueNum >= 1 && blueNum <= 16) {
                userArr[userArr.length - 1] = blueNum;
                break;
            } else {
                System.out.println("当前数据不合法");
                //既然不合法那么就需要重新输入
            }
        }
        return userArr;
    }
    //使用方法生成一个中间号码
    public static int[] createNumber(){
        int [ ]arr=new int[7];//由七位数字构成
        Random r=new Random();
        for (int i = 0; i < 6; ) {
            //把红球添加到前6位上去
            int redNumber=r.nextInt(33)+1;
            //但是前面6位不能出现重复值
            //调用方法判断红球是否存在
          boolean flag=  remains(arr,redNumber);
          if(!flag){
              arr[i]=redNumber;
              i++;
          }
        }
        //生成蓝球号码
        int blueNumber=r.nextInt(16)+1;
        arr[arr.length-1]=blueNumber;
        //添加到最大索引处即可
        return arr;
    }
    public static boolean remains(int [ ]arr,int redNumber){
        for (int i = 0; i < arr.length; i++) {
            if(redNumber==arr[i]){
                return true;
            }
        }
        return false;
    }
}
